
#include "S_9_Maintenance_doGet.h"
#include "mi_iid_define.h"
#include "property_decoder.h"
#include "section_define.h"
#include "main.h"

extern uint8_t  g_uNo1RegList[PBS_NO1REGSIZE];
extern uint8_t  g_uNo2RegList[PBS_NO2REGSIZE];

/**
 * 格式: property_value_new_string(字符串)　
 * 取值: 字符串，没有限制取值范围
 */
static void P_9_1_Clean_doGet(property_operation_t *o)
{
	InDoorBusReg RegSection1 = {0};
	char Str[8] = {0};
#if 	PROPERTY_TYPE
	
	RegSection1.V8 = GetPbsRegValue(0x29);
//	if(RegSection1.V8)
	{
		sprintf(Str,"%d,%d,%d,%d",g_uNo1RegList[0x2A],g_uNo1RegList[0x2B],g_uNo1RegList[0x2C]&0x7F,(g_uNo1RegList[0x2C]&0x80)>>7);	//自清洁
		property_value_new_string(&o->value,Str);
	}
	

#else	
    o->value.format = PROPERTY_FORMAT_STRING;
	strncpy(o->value.data.string.value, "hello", strlen("hello")); // TODO: 这里需要读到属性真正的值
	o->value.data.string.length = strlen("hello"); // TODO: 这里需要读到属性真正的值
#endif
    
}

/**
 * 格式: property_value_new_string(字符串)　
 * 取值: 字符串，没有限制取值范围
 */
static void P_9_2_Examine_doGet(property_operation_t *o)
{
	static InDoorBusReg Reg = {0};
#if 	PROPERTY_TYPE
	//0x0060
	Reg.V8 = GetPbsRegValue(0x60);
	if(Reg.BIT.bit7)
	{
		property_value_new_string(&o->value,"-500");
	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-501");
	}	

	if(Reg.BIT.bit5)
	{
		property_value_new_string(&o->value,"-502");
	}

	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-503");
	}

	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-504");
	}

	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-505");
	}

	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-517");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-518");
	}

	//0x0061
	Reg.V8 = GetPbsRegValue(0x61);
	if(Reg.BIT.bit7)
	{
		property_value_new_string(&o->value,"-506");
	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-507");
	}

	if(Reg.BIT.bit5)
	{
		property_value_new_string(&o->value,"-550");
	}

	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-564");
	}

	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-565");
	}

	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-566");
	}

	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-567");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-556");
	}

	//0x0062
	Reg.V8 = GetPbsRegValue(0x62);
	if(Reg.BIT.bit7)
	{
		property_value_new_string(&o->value,"-558");
	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-561");
	}

	if(Reg.BIT.bit5)
	{
		property_value_new_string(&o->value,"-562");
	}

	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-563");
	}

	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-600");
	}

	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-601");
	}

	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-602");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-590");
	}

	//0x0063
	Reg.V8 = GetPbsRegValue(0x63);
	if(Reg.BIT.bit7)
	{
		property_value_new_string(&o->value,"-603");
	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-669");
	}

	if(Reg.BIT.bit5)
	{
		property_value_new_string(&o->value,"-591");
	}

	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-592");
	}

	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-604");
	}

	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-605");
	}

	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-606");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-607");
	}

	//0x0064
	Reg.V8 = GetPbsRegValue(0x64);
	if(Reg.BIT.bit7)
	{
		property_value_new_string(&o->value,"-609");
	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-596");
	}

	if(Reg.BIT.bit5)
	{
		property_value_new_string(&o->value,"-597");
	}

	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-610");
	}
	
	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-598");
	}

	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-599");
	}

	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-611");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-639");
	}

	//0x0065	
	Reg.V8 = GetPbsRegValue(0x65);
	if(Reg.BIT.bit7)
	{
		property_value_new_string(&o->value,"-640");
	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-648");
	}

	if(Reg.BIT.bit5)
	{
		property_value_new_string(&o->value,"-641");
	}
	
	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-642");
	}

	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-643");
	}

	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-647");
	}

	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-660");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-661");
	}

	//0x0066	
	Reg.V8 = GetPbsRegValue(0x66);
	if(Reg.BIT.bit7)
	{
		property_value_new_string(&o->value,"-663");
	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-664");
	}

	if(Reg.BIT.bit5)
	{
		property_value_new_string(&o->value,"-665");
	}

	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-666");
	}

	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-667");
	}
	
	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-668");
	}

	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-508");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-509");
	}

	//0x0067	
	Reg.V8 = GetPbsRegValue(0x67);
	if(Reg.BIT.bit7)
	{
		property_value_new_string(&o->value,"-608");
	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-593");
	}

	if(Reg.BIT.bit5)
	{
		property_value_new_string(&o->value,"-594");
	}
	
//	if(Reg.BIT.bit4)
//	{
//		property_value_new_string(&o->value,"-646");
//	}

	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-551");
	}

	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-552");
	}

	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-553");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-554");
	}

	//0x0068	
	Reg.V8 = GetPbsRegValue(0x68);
//	if(Reg.BIT.bit7)
//	{
//		property_value_new_string(&o->value,"-555");
//	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-557");
	}

//	if(Reg.BIT.bit5)
//	{
//		property_value_new_string(&o->value,"-645");
//	}

//	if(Reg.BIT.bit4)
//	{
//		property_value_new_string(&o->value,"-662");
//	}

//	if(Reg.BIT.bit3)
//	{
//		property_value_new_string(&o->value,"-510");
//	}

	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-511");
	}

//	if(Reg.BIT.bit1)
//	{
//		property_value_new_string(&o->value,"-512");
//	}

//	if(Reg.BIT.bit0)
//	{
//		property_value_new_string(&o->value,"-513");
//	}

	//0x0069
	Reg.V8 = GetPbsRegValue(0x69);
//	if(Reg.BIT.bit7)
//	{
//		property_value_new_string(&o->value,"-514");
//	}

//	if(Reg.BIT.bit6)
//	{
//		property_value_new_string(&o->value,"-515");
//	}

//	if(Reg.BIT.bit5)
//	{
//		property_value_new_string(&o->value,"-516");
//	}

	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-559");
	}
	
	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-620");
	}

	if(Reg.BIT.bit2)
	{
		property_value_new_string(&o->value,"-621");
	}

	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-622");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-623");
	}

	//0x006A	
	Reg.V8 = GetPbsRegValue(0x6A);
//	if(Reg.BIT.bit7)
//	{
//		property_value_new_string(&o->value,"-624");
//	}

//	if(Reg.BIT.bit6)
//	{
//		property_value_new_string(&o->value,"-644");
//	}

//	if(Reg.BIT.bit5)
//	{
//		property_value_new_string(&o->value,"-680");
//	}
		
//	if(Reg.BIT.bit4)
//	{
//		property_value_new_string(&o->value,"-681");
//	}

//	if(Reg.BIT.bit3)
//	{
//		property_value_new_string(&o->value,"-682");
//	}

//	if(Reg.BIT.bit2)
//	{
//		property_value_new_string(&o->value,"-683");
//	}

//	if(Reg.BIT.bit1)
//	{
//		property_value_new_string(&o->value,"-684");
//	}

//	if(Reg.BIT.bit0)
//	{
//		property_value_new_string(&o->value,"-685");
//	}

	//0x006B
	Reg.V8 = GetPbsRegValue(0x6B);
	if(Reg.BIT.bit7)
	{
		property_value_new_string(&o->value,"-686");
	}

	if(Reg.BIT.bit6)
	{
		property_value_new_string(&o->value,"-687");
	}

//	if(Reg.BIT.bit5)
//	{
//		property_value_new_string(&o->value,"-688");
//	}

//	if(Reg.BIT.bit4)
//	{
//		property_value_new_string(&o->value,"-689");
//	}

	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-690");
	}

//	if(Reg.BIT.bit2)
//	{
//		property_value_new_string(&o->value,"-691");
//	}

//	if(Reg.BIT.bit1)
//	{
//		property_value_new_string(&o->value,"-692");
//	}

//	if(Reg.BIT.bit0)
//	{
//		property_value_new_string(&o->value,"-693");
//	}

	//0x006E
	Reg.V8 = GetPbsRegValue(0x6E);
	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-713");
	}

	Reg.V8 = GetPbsRegValue(0x70);
	if(Reg.BIT.bit5)
	{
		property_value_new_string(&o->value,"-726");
	}

	if(Reg.BIT.bit4)
	{
		property_value_new_string(&o->value,"-727");
	}

	if(Reg.BIT.bit3)
	{
		property_value_new_string(&o->value,"-728");
	}
	
	Reg.V8 = GetPbsRegValue(0x74);
	if(Reg.BIT.bit1)
	{
		property_value_new_string(&o->value,"-519");
	}

	if(Reg.BIT.bit0)
	{
		property_value_new_string(&o->value,"-520");
	}
	
//	if((g_tErrorCode.errorcode == 0) && (GetEnterErrCodeDisplayFlag() == SH_SET))//无故障码
	if(g_tErrorCode.errorcode == 0)//无故障码
	{
		property_value_new_string(&o->value,"none");
	}	
#else	
    o->value.format = PROPERTY_FORMAT_STRING;
	strncpy(o->value.data.string.value, "world", strlen("world")); // TODO: 这里需要读到属性真正的值
	o->value.data.string.length = strlen("world"); // TODO: 这里需要读到属性真正的值
#endif
    
}

/**
 * 格式: property_value_new_float(浮点数)　
 * 取值: 最小值: 0.0, 最大值: 876000.0, 步长: 0.1
 */
static void P_9_5_RunningDuration_doGet(property_operation_t *o)
{
	static uint32_t reg_data = 0;
	float Temp = 0.0;
#if 	PROPERTY_TYPE
	reg_data = g_uNo2RegList[0x41] | (g_uNo2RegList[0x42]>>24) | (g_uNo2RegList[0x43]>>16) | (g_uNo2RegList[0x44]);
	if(reg_data<=876000)
	{
		Temp = (float)reg_data/10.0;
		property_value_new_float(&o->value,Temp);
	}
		
#else	
    o->value.format = PROPERTY_FORMAT_NUMBER;
	o->value.data.number.type = DATA_NUMBER_FLOAT;
	o->value.data.number.value.floatValue = 16.0; // TODO: 这里需要读到属性真正的值
#endif
    
}

void S_9_Maintenance_doGet(property_operation_t *o)
{
    switch (o->piid)
    {
        case PIID_9_1_Clean:
            P_9_1_Clean_doGet(o);
            break;

        case PIID_9_2_Examine:
            P_9_2_Examine_doGet(o);
            break;

        case PIID_9_5_RunningDuration:
            P_9_5_RunningDuration_doGet(o);
            break;

        default:
            o->code = OPERATION_ERROR_VALUE;
            break;
    }
}
